package com.elin4it.blog.service;

import com.elin4it.blog.pojo.Article;
import com.elin4it.blog.pojo.ArticleCustom;

import java.util.List;

/**
 * User:Elin
 * Date:2015/7/19
 * Description:
 */
public interface ArticleService {
    /**
     * 添加一篇文章
     *
     * @param article
     * @return 文章的id
     * @throws Exception
     */
    int addArticle(Article article) throws Exception;

    /**
     * 获取总文章数量
     *
     * @return
     * @throws Exception
     */
    Integer articleCount(int type) throws Exception;

    /**
     * 通过主键查询文章
     *
     * @param id
     * @return
     * @throws Exception
     */
    ArticleCustom findArticle(int id) throws Exception;

    /**
     * 通过时间排序得到最新的十篇文章
     *
     * @return
     * @throws Exception
     */
    List<ArticleCustom> findArticleTopTenByTime() throws Exception;

//    /**
//     * 获取文章分页后的列表
//     *
//     * @param pageNum   页码(从1开始计数）
//     * @param pageCount 每页的数量
//     * @return
//     * @throws Exception
//     */
//    List<ArticleCustom> findArticlePaging(int pageNum, int pageCount) throws Exception;

    /**
     * 获取文章列表（不分页）
     *
     * @return
     * @throws Exception
     */
    List<ArticleCustom> findArticle() throws Exception;


    /**
     * 得到文章数量
     *
     * @param type 类型（如果为0则无条件)
     * @return
     * @throws Exception
     */
    Integer pageNum(int type) throws Exception;

    /**
     * 获取分页后的指定文章类型的列表
     *
     * @param pageNum   页码（从1开始技术）
     * @param pageCount 每页的数量
     * @param type      文章类型(如果为0表示无条件查找)
     * @return
     * @throws Exception
     */
    List<ArticleCustom> findArticlePagingWithArticleType(int pageNum, int pageCount, int type) throws Exception;

    /**
     * 通过主键修改文章
     *
     * @param article
     * @return
     * @throws Exception
     */
    boolean updateArticle(Article article) throws Exception;

    /**
     * 根据id删除文章
     * @param id
     * @return
     * @throws Exception
     */
    boolean deleteArticle(Integer id)throws Exception;

}
